package com.mes.biz.domain;

import javax.validation.Valid;
import javax.validation.constraints.NotBlank;
import java.util.Date;
import java.util.List;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.mes.common.annotation.Excel;
import com.mes.common.core.domain.BaseEntity;
import com.mes.common.utils.log.annotation.FieldRemark;
import com.mes.common.utils.log.annotation.LogField;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

/**
 * 领用出库单对象 biz_receive_order
 * @author wy
 * @email wy
 * @date 2023-06-16
 */
@Data
public class BizReceiveOrder extends BaseEntity<BizReceiveOrder>
{
    private static final long serialVersionUID = 1L;

    /** 出库单号 */
    @Excel(name = "出库单号")
    @LogField
    @FieldRemark(name = "出库单号",field = "receiveCode")
    private String receiveCode;

    /** 领用时间 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "领用时间", width = 30, dateFormat = "yyyy-MM-dd")
    @LogField
    @FieldRemark(name = "领用时间",field = "receiveDate")
    private Date receiveDate;

    /** 领用时间开始 */
    private String beginReceiveDate;

    /** 领用时间结束 */
    private String endReceiveDate;

    /** 领用人id */
    @Excel(name = "领用人id")
    @LogField
    @FieldRemark(name = "领用人id",field = "receiveUserId")
    private String receiveUserId;

    /** 领用人名称 */
    @Excel(name = "领用人名称")
    @LogField
    @FieldRemark(name = "领用人名称",field = "receiveUserName")
    private String receiveUserName;

    /** 仓库 */
    @Excel(name = "仓库")
    @NotBlank(message = "仓库不允许为空")
    @LogField
    @FieldRemark(name = "仓库",field = "warehouseId")
    private String warehouseId;
    private String warehouseName;

    /** 租户id */
    @Excel(name = "租户id")
    @LogField
    @FieldRemark(name = "租户id",field = "tenantId")
    private String tenantId;

    /** 状态 0:待审核 1:已审核 */
    @Excel(name = "状态 0:待审核 1:已审核", dictType = "sys_normal_disable")
    @LogField
    @FieldRemark(name = "状态 0:待审核 1:已审核",field = "status")
    private String status;

    private List<BizReceiveOrderDetail> detailList;
}
